Reference
- 문제 출처 - HackerRank
- 파이썬 연습 - Practice - Python
- 파이썬 기본 자료형 - w3schools.com
개인적인 생각과 상상으로 작성한 내용들이 포함되어 있습니다
문제를 풀고 Discussion Tab을 참고하며 코드 스타일을 개선하려고 노력하고자 합니다
HackerRank
Numpy 패키지와 관련된 내용은 수학적 내용들과 함께 다루기 위해 나중에 다시 정리하기로 했다.
HackerRank의 Python 연습문제들은 아래와 같은 카테고리로 분류 된다:
Subdomain
Introduction- Basic Data Types
- Strings
- Sets
- Math
- Itertools
- Collections
- Date and Time
- Errors and Exceptions
- Classes
- Built-Ins
- Python Functionals
- Regex and Parsing
- XML
- Closures and Decorators
- Numpy
- Debugging
Basic Data Types
개념 공부
파이썬의 기본 데이터 타입들에 대해 알아보자
categories | python code |
---|---|
Text Type: | str |
Numeric Types: | int, float, complex |
Sequence Types: | list, tuple, range |
Mapping Type: | dict |
Set Types: | set, frozenset |
Boolean Type: | bool |
Binary Types: | bytes, bytearray, memoryview |
- type() 함수를 통해 객체의 데이터 타입을 알 수 있다
x = 5
print(type(x))
# output
# <class 'int'>
- Python에서는 변수에 값을 할당하면 자동으로 데이터 타입이 결정된다.
Example | Data type |
---|---|
x = “Hello World” | str |
x = 20 | int |
x = 20.5 | float |
x = 1j | complex |
x = [“apple”, “banana”, “cherry”] | list |
x = (“apple”, “banana”, “cherry”) | tuple |
x = range(6) | range |
x = {“name” : “John”, “age” : 36} | dict |
x = {“apple”, “banana”, “cherry”} | set |
x = frozenset({“apple”, “banana”, “cherry”}) | frozenset |
x = True | bool |
x = b”Hello” | bytes |
x = bytearray(5) | bytearray |
x = memoryview(bytes(5)) | memoryview |
Lists
- INPUT
입력받을 커맨드 개수 n을 입력받는다
n 줄에 거쳐 커맨드를 입력받는다1 insert i e: Insert integer at position .
2 print: Print the list.
3 remove e: Delete the first occurrence of integer .
4 append e: Insert integer at the end of the list.
5 sort: Sort the list.
6 pop: Pop the last element from the list.
7 reverse: Reverse the list.
@lordmauve 사용자의 말에 따르면,
- ‘if/else문’ 은 많은 반복성과 유지/보수성이 떨어진다
- ‘eval()’ 함수를 사용하는 것은 보안과 성능 면에서 모두 떨어진다
- ‘dict 자료형’ 에 명령어들을 담아서 사용하는 것은 나쁘지 않으나,
모든 메소드들을 정확히 입력해야하며 약간의 반복성을 띈다 - 확장성을 위해 ‘getattr()’를 사용하는 것을 권장
(하는데 아직은 잘 이해가 안된다)
(print() 메소드를 따로 설정하는 것을 봤을 때,
아마 내장함수 list의 네임스페이스에 명령어들이 이미 포함되어 있어서 그런 것 같다)
mylist = [] |
Tuples
- tuple 보다는
hash()
함수에 대해 궁금해지는 문제…
List Comprehensions
직육면체의 크기(차원)를 나타내는 세 정수 (x, y, z)를 입력 받고 비교값 N을 입력받는다
3차원 공간에서 해당 직육면체 범위 안의 값들 중 임의의 (i, j, k) 좌표를 가져왔을 때,
i + j + k의 값이 N과 다른 모든 좌표값을 출력하는 문제
(문제 설명부터 길다…)1
1
1
2[[0, 0, 0], [0, 0, 1], [0, 1, 0], [1, 0, 0], [1, 1, 1]]
Find the Runner-Up Score
Runner up이 2등을 말한다는걸 처음 알게 되었다
그냥 단순히 1등, 2등, 3등을 first prize, second prize, third prize로만 알고 있었는데
1등을 grand prize 혹은 winner라고 표현하듯이 2등도 runner up이라는 표현이 있었다
(3등까지 표현하고 싶다면, 2등을 first runner up 3등을 second runner up 이라고 한다)몇 명의 주자가 있는지 n으로 입력 받고
각 주자들의 성적(score)을 배열에 입력 받아 2등의 성적을 출력하는 문제5
2 3 6 6 55
Nested Lists
물리 수업을 듣는 학생 수 N을 입력 받고, 학생 이름과 성적을 n번 반복하며 입력 받음
성적이 밑에서 2번째인 학생을 출력하는 문제 (성적이 같은 학생은 알파벳 순으로 출력)
(nested list를 사용해야 함)5
Harry
37.21
Berry
37.21
Tina
37.2
Akriti
41
Harsh
39Berry
Harry
Finding the percentage
- 학생 수 N을 입력 받고,
각 학생의 이름과 수학, 물리, 화학 성적을 입력 받는다
마지막 줄에 입력받은 학생의 이름의 성적의 평균을 출력하는 문제
(dict 자료형을 꼭 사용하라고 나와있다)
3
Krishna 67 68 69
Arjun 70 98 63
Malika 52 56 60
Malika
56.00